package com.ntd.study.base;


public class DemoHashCode {
    public static void main(String[] args) {
        final Object object = new Object();
    }

    /**
     * hashCode 方法再源码中是看不到实现的
     * 1.相同的值调用hashCode方法得到的返回值必须是相等的
     * 2.默认根据存储地址生成
     * 默认的hashCode方法会返回每个对象特有的序号（java是依据对象的内存地址计算出的此序号），所以两个号不同对象的hashCode值是不可能相等的
     *
     * @return
     */
    public native int hashCode();

    /**
     * Object equals 方法
     * 默认采用的是 == 进行判断
     *
     * @return
     */
    public boolean equals(Object obj) {
        return this == obj;
    }

    /**
     * Object 默认的toString 方法
     * 默认采用的是获取class名称 + @ + hash 结果转16进制
     * Integer.toHexString（） 将参数 转换为16进制
     *
     * @return
     */
    public String toString() {
        return this.getClass().getName() + "@" + Integer.toHexString(this.hashCode());
    }
}
